// 引入node内置的标准库 http 类实现基于网络的编程
const http = require('http');
const url = require('url');


// 使用 http.Server 类来创建一个http  server 对象
// const server = new http.Server();
// 与上面是一样的
const server = http.createServer();

// 注册 request 事件回调函数，当有客户端连接请求被监听到的时候执行回调
server.on('request', (req, res) => {
    console.log(`有客户端请求`);

    // 使用 req 对象获取到当前请求的url信息
    // console.log('url', req);

    // 写入数据
    // 浏览器 => 发送了一个请求 => http://locahost:8888 => 网卡 => app(node.js) => net write('hello') => 网络 => 网卡 => 浏览器 => hello => 渲染
    // res.write('Hello');
    // 结束数据写入
    // res.end();

    // http://localhost:8888/1 => hello
    // http://localhost:8888/2 => world


    // 根据不同的url返回不同的资源（数据）

    // 使用 Node.js 的 url 模块中提供的工具方法解析 url 字符串

    // 使用 WHATWG（HTML5）JavaScript 中的 URL API 解析 URL 字符串
    const urlObj = new URL('http://locahost:8888' + req.url);
    // const urlObj = url.parse(req.url);
    // console.log(urlObj);

    if (urlObj.pathname == '/1') {
        res.write('Hello');
    }
    if (urlObj.pathname == '/2') {
        res.write('<h1>World</h1>');
    }
    if (urlObj.pathname == '/3') {
        res.write(new Date().toString());
    }

    res.end();
});

// 指定当前 Server 需要监听的主机
// listen 与 当前机器的 网卡进行了一个交互
server.listen(8888, '0.0.0.0', () => {
    console.log(`服务启动成功`);
});
